/**
 * 会话类型
 */
export type IScene = 'p2p' | 'team';

/**
  消息类型
  'text' (文本)
  'image' (图片)
  'audio' (音频)
  'video' (视频)
  'file' (文件)
  'geo' (地理位置)
  'custom' (自定义消息)
  'tip' (提醒消息)
  'robot' (机器人消息)
    提醒消息用于会话内的状态提醒，如进入会话时出现的欢迎消息，或者会话命中敏感词后的提示消息等等.
  'notification' (群通知消息)
    某些群操作后所有群成员会收到一条相应的群通知消息, 详细介绍请参考群通知消息的类型
  此类消息不会计入未读数
 */
export type IMessageType = 'text' | 'image' | 'audio' | 'video' | 'file' | 'geo' | 'custom' | 'tip' | 'robot' | 'notification' | 'timeTag';

/** 消息中文件的字段 */
export type IMessageFile = IImFile | IImImage | IImAudio | IImVideo;

/**
 * 文件类型
 */
export interface IImFile {
  /** 应用层自己决定url的内容，可以是hash或者文件名或全路径 */
  url: string;
  name: string;
  size: number;
  md5?: string;
  /** 扩展名 */
  ext?: string;
}

/** 图片 */
export interface IImImage extends IImFile {
  w: number;
  h: number;
  /* 本地预览图片地址 */
  pendingUrl?: string;
}

/** 语音 */
export interface IImAudio extends IImFile {
  /**
   * 实时转成 mp3 流的 url
   * 此 url 支持的格式有: mp3, wav, aac, wma, wmv, amr, mp2, flac, vorbis, ac3
   */
  mp3Url: string;
  /** 长度（毫秒） */
  dur: number;
}

/** 视频 */
export interface IImVideo extends IImFile {
  /** 长度（毫秒） */
  dur: number;
  w: number;
  h: number;
  pendingUrl?: string;
}

/**
 * 地理位置
 */
export interface IImGeo {
  /** 纬度 */
  lat: number | string;
  /** 经度 */
  lng: number | string;
  /** 地址描述 */
  title?: string;
}